Multi-Media Center for Computing Systems

ABSTRACT

Various “media-components” are provided in a “multi-media center.” In modular architecture, a module-controller communicates with media-modules provided for various media-components. A media-module can include or obtain data pertaining to a particular media-component, identify media-player(s), and access information related to their media. However, the media-modules are isolated from each other, and the module-controller effectively controls output generated in response to user input. A user interface library is provided for the media-modules. Media-modules can obtain a template or other tools from the library and construct their user interface (e.g., menus). Media-modules can also identify a media-player that can be initiated in response to user input. Subsequently, the media-controller forwards user input to the media-player.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.11/247,975, filed Oct. 10, 2005, and entitled “MULTI-MEDIA CENTER FORCOMPUTING SYSTEMS,” which is hereby incorporated herein by reference,which in turn claims priority to U.S. Provisional Patent Application No.60/724,622, filed Oct. 7, 2005, and entitled “MULTIMEDIA SYSTEM,” whichis hereby incorporated herein by reference.

This application is related to: (i) U.S. patent application Ser. No.11/245,937, filed Oct. 7, 2005, and entitled “TECHNIQUES FOR PAIRINGREMOTE CONTROLLERS WITH HOST DEVICES,” which is hereby incorporated byreference herein; and (ii) U.S. Provisional Patent Application No.60/725,544, filed Oct. 10, 2005, and entitled “MULTIMEDIA CONTROLCENTER,” which is hereby incorporated by reference herein.

BACKGROUND OF THE INVENTION

Today, virtually anything can be represented as digital data andpresented in numerous forms including audible, visual, or audio-visualforms. Digital data can also be transported electronically, for example,as digital files or digital streams. Basically speaking, digital datacan be stored as a “digital media” (e.g., a digital file, a media-playerwhich stores digital data). Digital media (or “media”) can be accessedby a variety of computing devices (e.g., personal computers,media-players, personal assistants, wireless phones). Typically, digitalmedia includes at least digital content (or “content”) that representsthe actual content of information stored in a digital form. As such,digital content can, for example, be the content of a printed book, apicture, a song in audible form and/or in audio-visual forms (e.g., arock video), movies, sports broadcasts, news in a variety of formsincluding text, audio, or audio-visual.

Digital media can be packaged with media-player(s) and/or otherapplication programs. For example, Apple iPod media-player availablefrom Apple Computers, Inc. combines a digital audio player and aportable hard drive for storing the media. iTunes or iPhoto, which arealso available from Apple Computers, Inc, can be packaged withmedia-players and applications or tools that can be used fororganization, searching and retrieval of media (e.g., organizing photo,obtaining lists of music or films from a database, and downloading musicor films). Packaging digital media with media-players, tools, or otherapplications is a relatively recent development. Nevertheless, given thepopularity of digital media, numerous forms of media and media-playershave been developed and are in use today.

As digital data has become more prevalent, techniques for presentingdigital data have become increasingly more useful.

SUMMARY OF THE INVENTION

The invention pertains to techniques for combining various“media-components” through use of a “multi-media center” which can beaccessed via a central-user-interface.

The invention can be implemented in numerous ways, including a method,an apparatus, a computer readable medium, a computer system, or a signalembodied in a carrier wave. Several embodiments of the invention arediscussed below.

As a method, implemented by a computing system, of providing amulti-media center that includes a plurality of media-components, oneembodiment can, for example, include at least: configuring a pluralityof media-modules for the multi-media center, wherein the plurality ofmedia-modules represents a media-component in the multi-media-center,wherein each of the plurality of media-components includes at least oneof digital media and an application program configured to access digitalmedia; initiating a module-controller configured to communicate witheach of the plurality of media-modules; receiving by themodule-controller an input associated with the multi-media center;identifying at least one of the plurality of media-modules to generate aresponse to the input received by the module-controller; forwarding theinput to the identified media-module; and receiving, at themodule-controller, a response to the input as determined by theidentified media-module.

As a computing system for providing a multi-media center that includes aplurality of media-components each including digital media, oneembodiment can, for example, can include at least at least oneprocessor; a plurality of media-modules, wherein the media-modulesinclude a first media-module that can receive input and generate output;and a module-controller configured to communicate directly with each ofthe plurality of media-modules. The module-controller can furtheroperate to: receive input associated with the multi-media center;forward the input to a first media-module; process and generate anoutput, by the first media-module, in response to the input; receive theoutput from the first media-module in response to the input; and performat least one operation based on the output, where the at least oneoperation is controlled by the module-controller. The plurality ofmedia-modules do not communicate with each other or with a multi-mediacenter user and do not control the output.

As a computer readable medium including at least executable computerprogram modules stored therein for a multi-media center that includes aplurality of media-components, where each of the plurality ofmedia-components includes digital data. The computer readable mediumincludes at least: computer program code for determining, based on aplurality of media-modules that each respectively represent at least onemedia-component, a central-user-interface that is used to access theplurality of media-components provided by the multi-media center;computer program code for receiving input associated with thecentral-user-interface; computer program code for determining whether toforward the input to one of the media-modules; and computer program codefor forwarding the input to a first media-module of the plurality ofmedia-modules when the determining determines to forward the input byone of the media-modules. The plurality of media-modules are isolatedfrom each other and do not directly communicate with each other or witha multi-media center user, but communicate with a module-controller.

As a method, implemented by a computing system, of providing amulti-media center that includes a plurality of media-components whicheach includes digital data and program code to access the digital data,one embodiment of the invention can, for example, include at least:determining, based on a plurality of media-modules that eachrespectively represent at least one media-component, acentral-user-interface that is used to access the plurality ofmedia-components provided by the multi-media center; receiving inputassociated with the central-user-interface; determining whether toforward the input to one of the media-modules; and forwarding the inputto a first media-module of the plurality of media-modules when thedetermining determines to forward the input by one of the media-modules.The plurality of media-modules are isolated from each other and do notdirectly communicate with each other or with a multi-media center user,but communicate with a module-controller.

As a computing system for providing a multi-media center that supportsdigital media, one embodiment can, for example, can include at least aplurality of media devices, where the media devices include a firstmedia device that can receive input and generate output, and acentralized controller configured to communicate directly with each ofthe plurality of media devices. The centralized controller is configuredto: receive input associated with the multi-media center; determine afirst media device of the plurality of media device to receive theinput; forward the input to the first media device; and process andgenerate an output, by the first media device, in response to the input.

Other aspects and advantages of the invention will become apparent fromthe following detailed description, taken in conjunction with theaccompanying drawings, illustrating by way of example the principles ofthe invention.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention will be readily understood by the followingdetailed description in conjunction with the accompanying drawings,wherein like reference numerals designate like structural elements, andin which:

FIG. 1 depicts a computing environment capable of providing amulti-media-center in accordance of one embodiment of the invention.

FIG. 2A depicts a method for providing a multi-media center inaccordance with one embodiment of the invention.

FIG. 2B depicts a method for processing input associated with amulti-media center in accordance with one embodiment of the invention.

FIG. 3 depicts in greater detail an architectural view for a multi-mediacenter program that can provide access to multiple media-components viaa central-user-interface in accordance with one embodiment of theinvention.

FIGS. 4A-4B depict a method for providing a multi-media center which canbe accessed to a central-user-interface in accordance with anotherembodiment of the invention.

DETAILED DESCRIPTION OF THE INVENTION

As noted in the background section, techniques for presenting digitaldata have become increasingly more useful as digital media andmedia-players have become increasingly more popular and prevalent.Furthermore, given that many different forms of digital media andmedia-players have been developed and even more are likely to bedeveloped soon, it is highly desirable to provide a “multi-media center”that can effectively combine various “media-components.”

Accordingly, the invention pertains to techniques for combining various“media-components.” In accordance with one aspect of the invention,various “media-components” are provided in a “multi-media center” whichcan be accessed via a central-user-interface. A “media-component” asused herein refers to digital media and/or application(s) used to accessdigital media. The “multi-media center” can, for example, be provided asa program on a computer system that includes one or more computers. Thecentral-user-interface can graphically represent each media-component(e.g., as a selectable item in a main menu). User input can be entered,for example, by a keyboard and/or mouse connected to a computer system,or it can be entered remotely (e.g., wirelessly and/or over a network).

Another aspect of the invention provides a modular architecture thatincludes at least one media-module for each of the media-componentsconfigured for the multi-media-player. A media-module can include orobtain data pertaining to a particular media-component (e.g., userinterface menus, lists of digital data in the media-component). Inaddition, a media-module can also identify media-player(s) and accessinformation related to their media (e.g., music or movie lists).However, the media-modules do not directly control output. Instead, amodule-controller communicates with various media-modules andeffectively controls output generated in response to user input. Themodule-controller can forward the input to various media-modules forprocessing and receive output from them. Subsequently, themodule-controller can use the output generated by the media-modules toperform the appropriate response (e.g., manipulate display of menus orpresentation of media). In other words, the media-modules do notdirectly control the output of the multi-media center even though theymay process the input and effectively generate the appropriate response.Furthermore, media-modules can be isolated from each other. As a result,the media-modules cannot communicate with each other, but can be addedor removed dynamically as they do not affect each other or a main (base)program that effectively runs the multi-media center.

In one embodiment, each media-module includes or can obtain informationneeded to construct menus for its associated media-component. It shouldbe noted that media-modules can construct their menus (or submenus) byusing an User Interface Library (or library). More particularly,media-modules can obtain a template or other tools (e.g., metricutilities, windows, views, widgets, sounds) from the User InterfaceLibrary (or library). As such, each media-module may select a userinterface template (e.g., menus, window) from the User Interface Library(or library) and subsequently fill (or populate it) with the appropriateinformation (e.g., menu items). In addition, the media-module canidentify media-player(s) that can be used to present digital dataassociated with a media-component, and access information related totheir media (e.g., music or movie list). However, the module-controllerinitiates the media-player associated with a media-component andsubsequently forwards any input associated with presentation of mediadirectly to the media-player for processing. As a result, the familiarlook and feel of media-players can be preserved.

Embodiments of these aspects of the invention are discussed below withreference to FIGS. 1-4B. However, those skilled in the art will readilyappreciate that the detailed description given herein with respect tothese figures is for explanatory purposes as the invention extendsbeyond these limited embodiments.

FIG. 1 depicts a computing environment 100 capable of providing amulti-media-center in accordance with one embodiment of the invention.It will be appreciated that the multi-media-center can combine aplurality of media-components each including digital data and/orapplication(s) that can access digital data. The digital data associatedwith a media-component can be presented in one or more forms (e.g.,display pictures, play music while displaying pictures, play a movie ora song). These media-components can be readily available and/orgenerally known (e.g., music player (e.g., iTunes), photo viewer (e.g.,iPhoto), DVD player) or they can be developed for themulti-media-center. In general, each media-component includes digitaldata which can be presented in one or more forms and/or one or moreapplication(s) (e.g., media-player) that can be used to manipulatedigital data (e.g., present, organize, retrieve).

It will be appreciated that the computing environment 100 can provide a“central-user-interface” that can serve as a user interface foraccessing all the media-components provided in the multi-media center.Referring now to FIG. 1, a main menu 104 displayed on a display 102 canbe part of the central-user-interface for a multi-media center providedby the computing system 108. Furthermore, user input may be entered viaan input device 106 (e.g., keyboard, mouse) connected to a computingsystem 108, and/or via a remote device 107 (e.g., remote controller,media-player with remote control capabilities) whether directly or via anetwork. The computing system 108 can, for example, be a computer, or aplurality of computers (e.g., a cluster). In general, the computingsystem 108 includes at least one processor and memory (not shown).

As depicted in FIG. 1, the main menu 104 can, for example, include amain menu-items (M₁ . . . M_(n)) for each of the media-componentsprovided by the multi-media center. Thus, a menu item M_(i) in the mainmenu 104 can represent a media-component M_(i). In addition, for each ofthe media-components (M₁-M_(n)) provided by the multi-media center, amedia-module is configured in the computing system 108. This means thata media-module 110 is provided for media-component M represented in themain menu 104 (M₁) and available for access. Generally, the media-module110 (M) can include the information needed to construct and displayvarious menus (or submenus) for the media-component M_(i). As such, ifthe media-component M is selected from the main menu, media-module 110can provide a main (or base) menu for the media-component M. Similarly,the media-module 110 (M_(i)) can provide submenus for themedia-component M_(i) if its submenu is selected, and so on. It shouldbe noted that the media-module 100 can obtain data from a local storage116 or a remote storage 118 (e.g., database). Typically, the datapertains to the media-component M.

It will be appreciated that the modular design of the architecturedemonstrated in FIG. 1 allows configuring a plurality of media-modulesfor various media-components. The media-module can provide a set ofself-contained menus for a media-component. In addition, media-modulescan be isolated from each other, so that they can be added or removedfrom the multi-media center without interfering with each other or amain program that controls the multi-media center.

In this modular design, the media-modules communicate with amulti-media-controller (or module-controller) 120. Themulti-media-controller 120 can effectively control the centralized userinterface (e.g., the menu displayed on display 102). Themulti-media-controller (or module-controller) 120 can also serve as acentral point for receiving input associated with the multi-media center(e.g., input received from the input 106, or remote device 107). Moreparticularly, the multi-media-controller 120 can forward an input 122 toone of the media-modules (M₁ . . . M_(n)), or to a media-player (orother applications) 112 that process the input in response to input 122.The media-modules (M₁ . . . M_(n)) can generate output (e.g., menu,submenu, request to activate a media-player). As will be discussed ingreater detail below, in some cases, the multi-media-controller 120processes input 122 without forwarding it to a media-module ormedia-player(s) 121.

From an architectural perspective, it is important to note that themedia-modules (M₁ . . . M_(n)) do not directly control output (e.g.,what is displayed on the display 102), but communicate with themulti-media-controller 120 which effectively controls output. However,output can be determined based on the processing or output provided orgenerated of the media-module. Typically, input is initially processedat a central location, namely, the multi-media-controller 120 which canroute the input to the appropriate destination. Finally, media-modules(M₁ . . . M_(n)) are typically isolated from each other and do notcommunicate with each other. Generally, the multi-media-controller 120routes input to a media-module (M_(i)) if it can be handled by themedia-module (e.g., input concerns a menu or additional informationrelating to a media-component). However, if a media-player (or otherapplication) is to be activated or is currently presenting media, thenthe module-controller typically forwards the input to the media-playerto affect the presentation of the media (or processing of media by anapplication program).

FIG. 2A depicts a method 150 for providing a multi-media center inaccordance with one embodiment of the invention. Initially, at least onemedia-module is configured (152) for each media-component provided bythe multi-media center. A media-module represents a media-component andcan, among other things, include and/or obtain information relating to amedia-component (e.g., menus, lists of available items) and/orapplications (e.g., media-players) related to the media-component.

Next, a central entity (e.g., a module-controller) is initiated (154)for the media-modules. The central entity (e.g., module-controller),among other things, can communicate with the media-modules and exchangeinformation, for example, as input/output. In addition, the centralentity (e.g., module-controller) can serve as a central point forreceiving input. Accordingly, the central entity (e.g.,module-controller) receives (156) input associated with themulti-media-controller. Finally, the central entity (e.g.,module-controller) effectively controls (158) the output of themulti-media center based on the input. As will be discussed below, acentral entity (e.g., module-controller) can effectively control theoutput of the multi-media cent, for example, by forwarding the input toa media-module and subsequently receiving output, by forwarding theinput to an application program associated with the media-module and themedia-component, or by effectively processing it internally or by anassociated component (e.g., a main view media-module provided to controlthe main-view for the multi-media center).

To further elaborate, FIG. 2B depicts a method 200 for processing inputassociated with a multi-media center in accordance with one embodimentof the invention. The processing method 200 can, for example, be used bythe multi-media-controller (or module-controller) 120 shown in FIG. 1.The multi-media center can, for example, be implemented as computerprogram. Initially, a central-user-interface that can be used to accessa plurality of media-components is determined (202). It should be notedthat the central-user-interface is determined based on a plurality ofmedia-modules that represent various media-components configured (i.e.,available) in the multi-media center. Accordingly, thecentral-user-interface is generated (204) based on the media-modules.Next, it is determined (206) whether input associated with thecentral-user-interface is received. If it is determined (206) that inputis received and the input does not indicate to end the multi-mediacenter, it is determined (208) whether to forward the input to one ofthe media-modules configured for the multi-media center. If it isdetermined (208) to forward the input to one of the media-modules, amedia-module that is to receive the input is determined and the input isforwarded (210) to the media-module. Thereafter, a response (e.g.,output) is generated (212) by the media-module. After the processing ofthe input by the media-module, it is determined (214) whether to updatethe central-user-interface based on the response generated by themedia-module. Accordingly, the central-user-interface can be updated(216). Subsequently, it can be determined (206) whether input associatedwith the central-user-interface is received and the processing method200 can proceed in a similar manner as discussed above. However, if itis determined (214) not to update the central-user-interface, it isdetermined (206) whether input associated with thecentral-user-interface is received without updating (216) thecentral-user-interface. Thereafter, the method 200 proceeds in a similarmanner as discussed above.

On the other hand, if it is determined (208) not to process the input bya media-module, it is determined (218) whether to process the input by amedia-player (or an application). Accordingly, the input can beprocessed (220) by the media-player and the media-player may affect thepresentation of media based on the input. Thereafter, it is determined(222) whether to end the multi-media center and the method 200 can end.Otherwise, it can be determined (206) whether input associated with thecentral-user-interface is received and the method 200 proceeds in asimilar manner as discussed above.

If it is determined (218) not to process the input by a media-player (orapplication), the input is processed (222) internally (e.g., by amedia-controller) or another component of the multi-media center (e.g.,by a main window component that processes input associated with a mainmenu of the multi-media center). Subsequently, it is determined (224)whether to end the multi-media center (e.g., terminate the computerprogram) and the method 200 can end accordingly. Otherwise, it isdetermined (206) whether input associated with the multi-media center isreceived and the method 200 proceeds as discussed above until an inputindicates to end the multi-media center.

FIG. 3 depicts in greater detail an architectural view for a multi-mediacenter that allows users to access multiple media-components byinterfacing with a central-user-interface in accordance with oneembodiment of the invention. As shown in FIG. 3, in addition to a numberof media-modules (304, 305, 306) and media-players 307, amodule-controller 302 can communicate with a menu-window 308 and a UserInterface Library (library) 310. It should be noted that themodule-controller 302 can receive input (e.g., as events) from akeyboard and/or mouse 314, a remote device 316, or other hardware input315 (e.g., DVD is inserted or ejected).

The menu-window 308 effectively controls menus displayed on the display309. In addition, it can maintain and store menus using menu-views 312.The menu-views 312 effectively implements a stack of menu-views to keeptrack of what has been displayed on the display 309. Thus menu-views 312can be added or removed from the stack as the user traverses up and downbetween various menus or submenus of a particular media-components orbetween main menu items of the multi-media center representing differentmedia-components, and so on. As will be appreciated, menus and submenuscan be created using a User Interface Library (library) 310. Moreparticularly, when the module-controller 302 receives an input, forexample, pertaining to a menu item associated with a particularmedia-component, the module-controller 302 can request that themedia-module “post” the appropriate menu to make this request. Themodule-controller 302 can, for example, forward the input to aparticular media-module. The media-module then, uses the User InterfaceLibrary (library) 310 to obtain an appropriate theme (or template) andthen uses the theme from the User Interface Library (library) 310 togenerate the appropriate menu (i.e., effectively fills out a templatewith its information). It should also be noted that a media-module 304can also use a media access layer 320 to access data (e.g., list ofsongs, movies), for example, from a database associated with amedia-component (iTunes) that stores information about themedia-component. In any case, menus and/or other data generated and/orobtained by a media-module can be forwarded to the module-controller 302which can in turn provide it to the menu-window 308.

To further elaborate, initialization of the module-controller 302 willbe discussed now. Initially, an initial-event signifying the start ofthe multi-media center program is received. This initial-event can beinput by a keyboard and/or mouse 314 or a remote device 316. In anycase, in response to the initial-event, the module-controller 302 isinitiated. The module-controller 302 effectively determines whatmedia-modules are currently configured, as media-modules may bedynamically added or removed from the configuration (e.g., amedia-module 306 may be added or removed without affecting othermedia-modules). In one embodiment of the invention, each media-modulesends its initial data (icon and name) to the module-controller 302. Themodule-controller 302 sends the initial data (icons and names) to themenu-window 308 which generates a main menu including the initial data(icons and name) generated by the media-modules. The menu-window 308 canuse the User Interface Library (library) 310 to generate the main menufor the multi-media center and facilitate displaying it on the display309.

After the main menu for the multi-media center is generated anddisplayed, the module-controller 302 can wait for user input (i.e.,input received from a user, for example, a human, or applicationprogram). If the input pertains to manipulation of the main menu for themulti-media center (e.g., rotation of a carrousel), then themodule-controller 302 can forward it to the menu-window 308 which iscapable of processing it to effectively manipulate the main menudisplayed on display 309 for the multi-media center (e.g., rotate acarrousel that represents the main menu). If user input, however,pertains to a particular media-module (e.g., selection of a particularmedia-module from the main menu of the multi-media center), themenu-window 308 does not process it even if the module-controller 302initially sends the input to the menu-window 308. Instead, themenu-window 308 can determine which media-module is to process theinput. This determination can, for example, be made based on which menuor menu item is currently displayed or is effectively on top of themenu-views 312. The media-module associated with the menu can then beidentified and forwarded to the module-controller 302.

Subsequently, the module-controller 302 can forward the user input tothe appropriate media-module for processing. It is likely that the inputassociated with a media-module initially pertains to a main (or base)menu for the media-component represented by the media-module. Themedia-module can access the User Interface Library (library) 310 to getan appropriate theme (or template) for its base menu. In one embodiment,a set of menus including a standard menu and an accessorized menu areprovided. The media-module can select a standard menu which includes alist of items, or an accessorized menu that additionally includes apreview screen. These Menus are also described in U.S. ProvisionalPatent Application No. 60/725,544, filed Oct. 10, 2005, and entitled“MULTIMEDIA CONTROL CENTER”.

In any case, the media-module can obtain a template for a menu andsubsequently fill (or populate) it with data (e.g., menu items).Subsequently the media-module can send its filled out menu to themodule-controller 302 which can, in turn, send it to menu-window 308.The menu-window 308 effectively displays the menu by pushing it on themenu-views 312. In this way, a main (or base) menu for a particularmedia-component can be displayed in response to a selection made fromthe main menu of the multi-media center.

When user input pertains to the main menu of the multi-media center, itcan be handled by the menu-window 308. More particularly, the inputinitially received by the module-controller 302 is forwarded to themenu-window 308. The menu-window 308 recognizes the input and it caneffectively process the input and communicate it to themodule-controller 302. However, the module-controller 302 may actuallycontrol the display, for example, by manipulating the main menudisplayed for the multi-media center (e.g., rotates the main menu).However, if input pertains to a particular media-module (e.g., selectionof a particular media-component), the input can be handled by themedia-module. More particularly, the media-module can access the UserInterface Library (library) 310 and construct another menu (or submenu)in a similar manner as discussed above. The constructed menu can then besent to module-controller 302 which sends it to the menu-window 308.

It should be noted that in addition to generating a menu (or submenu), amedia-module can effectively ask the module-controller 302 to initiate amedia-player (307). More particularly, when a user selects, for example,a menu item that is associated with presenting media (e.g., play music,play film, show photo, slideshow), user input is received by themodule-controller 302. The module-controller 302 can initially forwardthe input to the menu-window 308, but the menu-window 308 would notprocess the input as it does not pertain to manipulation of the mainmenu. Instead, the menu-window 308 effectively asks themodule-controller 302 to forward the input to the appropriatemedia-module. In addition, the menu-window 308 can effectively identifythe media-module that should process the input because it can determinewhich menu-view is the top (or most-front) menu and identify itsassociated media-module. In other words, menu-window 308 can determinewhich media-module's menu (or submenu) is currently being displayed andlet the module-controller 302 know which media-module should process theinput.

In addition to constructing menus, the media-module can perform otherfunctions. By way of example, when user input associated withpresentation of media is forwarded by the module-controller 302 to amedia-module 304, the media-module 304 can identify the input as arequest for presentation of media of its associated media-component. Asa result, the media-module 304 identifies a media-player (307) to beinitiated. Subsequently, the module-controller 302 initiates themedia-player (307) which effectively results in presentation of media ondisplay 309 and/or other devices (e.g., speakers). It should be notedthat when a media-player is initiated, the media-module 304 does notdirectly communicate with the media-player. Furthermore, as long as themedia-player is active (i.e., presenting media), the module-controller302 sends input directly to media-player (307) for processing. It willbe appreciated that various media-players readily available and/orfamiliar to the users can be used. In addition, the familiar look andfeel of media-players can be preserved. It is possible to have amedia-player (e.g., music player) present media (e.g., music) in thebackground while another media-player presents media (e.g., displaysphotos or a slideshow). It should also be noted that it is possible touse a virtual stack (307) to keep track of usage of the media-players.Hence, when an active media-player terminates, the media-player iseffectively popped from the virtual stack (307).

FIGS. 4A-4B depict a method 400 for providing a multi-media center whichcan be accessed via a central-user-interface in accordance with anotherembodiment of the invention. Initially, it is determined (402) whetheran activation event is received. If it is determined (402) that anactivation event is received, a module-controller is initiated (404).The module-controller effectively polls the media-modules which havebeen configured for the multi-media center for their initial data (e.g.,name of the media-module and icon). Accordingly, the media-modules sendthe module-controller initial data typically pertaining to their mainmenu for the multi-media center. As noted above, this data can, forexample, include an icon and name for each of the media-modules.Thereafter, a menu window can be initiated (408). Subsequently, themodule-controller sends the menu window the initial data. Thereafter,the menu window displays (412) a main menu for the multi-media center412. After the menu window is displayed, the module-controllereffectively awaits (414) input. Assuming that the input does notindicate (416) to terminate the multi-media center, it is determined(418) whether a media-player is active. If it is determined (418) that amedia-player is active, the module-controller sends (420) the input tothe appropriate media-player for processing and the media-playerprocesses (422) the input accordingly. Subsequently, it can bedetermined (414) by the module-controller whether input is received.

However, if it is determined (418) that a media-player is not active,the module-controller sends (424) the input to the menu window. The menuwindow can then determine (425) whether to handle the input. If the menuwindow determines (425) to handle the input, the menu window processes(426) the input. As a result, a main menu displayed for the multi-mediacenter can be manipulated (426). Thereafter, the module-controllerdetermines (414) whether input has been received and the method 400proceeds in a similar manner as discussed above.

On the other hand, if it is determined (425) that the menu window cannothandle the input, the main window identifies (428) the appropriatemedia-module to process the input. Subsequently, the module-controllersends (430) the input to the identified media-module.

Next, referring to FIG. 4B, the media-module determines (432) whether toactivate a media-player in response to the input. If it is determined(432) by the media-module to activate a media-player, the media-moduleidentifies (434) a media-player and requests (436) from themodule-controller to initiate the identified media-player. As a result,the module-controller initiates (438) the media-player. Thereafter, itcan be determined (414) by the module-controller whether the input isreceived, and method 400 proceeds in the similar manner as discussedabove.

On the other hand, if the media-module determines (432) not to activatea media-player, the input is directed to a menu (or other data) relatedto the media-component. Although other functions including obtaining(450) data can be performed by the media-module, for brevity, onlyconstruction of a menu is depicted in greater detail. Consequently, ifit is determined (449) that the input is associated with a menu, themedia-module obtains (440) a menu template from an User InterfaceLibrary (library). Subsequently, the media-module fills (442) the menuand sends (444) the filled menu to the module-controller. Themodule-controller sends (446) the menu to the menu-window. As a result,the appropriate menu is displayed (448) in response to the inputreceived (414) by the media-controller. Thereafter, it is determined bythe media-controller (414) whether the input is received, and the method400 proceeds in the similar manner as discussed above until it isdetermined (416) to end the method 400 and effectively terminate themulti-media center.

Those skilled in the art will know that media-modules can be designed ascomputer program modules that can be “plugged” in or removed from a mainmulti-media center application program. As such, media-modules may postall requests through a module-controller. In addition, media-modules canuse user interface classes and widgets provided in a user interfacelibrary, and access data via a media access layer. Media-modules canprovide one or more of the following functions: provide a media-moduleidentifier “key,” provide a main (or base) menu, have the ability torespond to input corresponding to a selection of one of the items listedin their main (or base) menu, provide a name and/or icon image for themedia-component they represent. The media-module may also provide otherfunctions including saving or restoring states associated with adatabase, playing a sound, and phrase presentation of an associatedmedia-player.

Those skilled in the art will also appreciate that a module-controllercan function as traffic manager. It can instantiate and keep track ofmedia-modules, route events associated with user input, control what isdisplayed. A user interface library can include metric utilities,windows and views, widgets, and sounds. The metric utilities can beimplemented as a set of C programming calls that provide various layoutmetrics, including screen frames, the menu frames, and text attributes.Windows and views can include a collection of classes that define thelayout and behavior of windows and views. Widgets can include a set ofinterface widgets that can be used by the media-module or window orviews. Finally, the user interface library can also provide hooks toplay sounds that can be played for various user actions. The sounds canbe played via a standard C calls.

The invention has many advantages. An embodiment of the invention caninclude one or more of these advantages. One advantage of the inventionis that various types of digital data and applications used to presentdigital data can be accessed from a user interface. Another advantage ofthe invention is that various types of digital data and applications canbe added or removed dynamically. Yet another advantage of the inventionis that it is possible to use a standard user interface library forvarious types of digital data and applications. Still another advantageof the invention is that it is possible to use and preserve the look andfeel of more popular media-players.

The many features and advantages of the present invention are apparentfrom the written description, and thus, it is intended by the appendedclaims to cover all such features and advantages of the invention.Further, since numerous modifications and changes will readily occur tothose skilled.

1. A method, implemented by a computing system, of providing amulti-media center that includes a plurality of media-components, saidmethod comprising: configuring a plurality of media-modules for themulti-media center, wherein the plurality of media-modules represents amedia-component in the multi-media-center, wherein each of the pluralityof media-components includes at least one of digital media and anapplication program configured to access digital media; initiating amodule-controller configured to communicate with each of the pluralityof media-modules; receiving by the module-controller an input associatedwith the multi-media center; identifying at least one of the pluralityof media-modules to generate a response to the input received by themodule-controller; forwarding the input to the identified media-module;and receiving, at the module-controller, a response to the input asdetermined by the identified media-module.
 2. A method as recited inclaim 1, wherein the plurality of media-modules do not directlycommunicate with each other, and wherein the plurality of media-modulescan be dynamically removed or added to the multi-media center.
 3. Amethod as recited in claim 1, wherein said method further comprises:determining whether to forward the input to another module that is notone of the plurality of media-modules.
 4. A computing system forproviding a multi-media center that includes a plurality ofmedia-components each including digital media, said computing systemcomprising: at least one processor; a plurality of media-modules,wherein said media-modules include a first media-module that can receiveinput and generate output; and a module-controller configured tocommunicate directly with each of said plurality of media-modules,wherein said module-controller can further operate to: receive inputassociated with said multi-media center; forward said input to a firstmedia-module; process and generate an output, by said firstmedia-module, in response to said input; receive said output from saidfirst media-module in response to said input; and perform at least oneoperation based on said output, wherein said at least one operation iscontrolled by the module-controller, wherein said plurality ofmedia-modules do not communicate with each other or with a multi-mediacenter user and do not control said output.
 5. A computer readablemedium including at least executable computer program modules storedtherein for a multi-media center that includes a plurality ofmedia-components, wherein each of said plurality of media-componentsincludes digital data, said computer readable medium comprising:computer program code for determining, based on a plurality ofmedia-modules that each respectively represent at least onemedia-component, a central-user-interface that is used to access theplurality of media-components provided by the multi-media center;computer program code for receiving input associated with thecentral-user-interface; computer program code for determining whether toforward the input to one of the media-modules; and computer program codefor forwarding the input to a first media-module of the plurality ofmedia-modules when the determining determines to forward the input byone of the media-modules, wherein the plurality of media-modules areisolated from each other and do not directly communicate with each otheror with a multi-media center user, but communicate with amodule-controller.
 6. A computer readable medium as recited in claim 5,wherein said computer readable medium further comprises: computerprogram code for determining which one of the media-modules is toreceive the input when the determining determines to forward the inputto one of the media-modules; computer program code for generating, bythe first media-component, a first output after associated with theinput; and computer program code for performing, based on the firstoutput, at least a first operation in response to the input associatedwith the central-user-interface.
 7. A computer readable medium asrecited in claim 6, wherein the first media-module includes or canobtain data that is output by the first media-module as the firstoutput.
 8. A computer readable medium as recited in claim 7, wherein thedata pertains to a menu for the media-module, wherein the first outputis the menu, and wherein the first operation is displaying the menu as apart of the central-user-interface.
 9. A computer readable medium asrecited in claim 7, wherein the first media-module accesses a library toobtain a template for the menu; and wherein the first media-module fillsthe template with the data included in or obtained by the first module.10. A computer readable medium as recited in claim 6, wherein the outputidentifies a first media-player, and wherein the first operationinitiates the first media-player.
 11. A computer readable medium asrecited in claim 5, wherein said computer readable medium furthercomprises: computer program code for determining whether to process theinput by a media-player capable of presenting media; and computerprogram code for processing the input by a media-player when thecomputer program code for determining determines to process the input bya media-player.
 12. A computer readable medium as recited in claim 5,wherein the computer program code for determining of whether to processthe input by a media-player is performed prior to the computer programcode for forwarding.
 13. A computer readable medium as recited in claim5, wherein each one of the media-modules includes or can obtaininformation that can be used to generate a main menu for themedia-modules, and wherein the central-user-interface includes each ofthe main menu for the media-modules.
 14. A computer readable medium asrecited in claim 13, wherein at least one of the media-modules includesor can obtain information that can be used to generate one or moresubmenus for the at least one media-module, and wherein thecentral-user-interface includes the one or more submenus for the atleast one media-module.
 15. A computer readable medium as recited inclaim 14, wherein the information includes a number of menu or submenuitems, icons, or streaming video.
 16. A computer readable medium asrecited in claim 5, wherein the module-controller comprises: computerprogram code for receiving the input; computer program code for sendingthe input to the first media-module; computer program code for receivingoutput from the first media-module in response to the input; andcomputer program code for performing at least one operation based on theoutput.
 17. A computer readable medium as recited in claim 16, whereinthe at least one operation initiates a media-player to present media.18. A computer readable medium as recited in claim 16, wherein the atleast one operation facilitates display of the output on a display,wherein the module-controller sends the output to a menu-window fordisplay, wherein the module-controller forwards the input to a mainwindow, and wherein main window determines whether to process the input.19. A computer readable medium as recited in claim 18, wherein saidcomputer readable medium further comprises: computer program code fordetermining by the main window whether to process the input; andcomputer program code for determining by the main window a media-moduleto process the input when the main window determines not to process theinput.
 20. A method, implemented by a computing system, of providing amulti-media center that includes a plurality of media-components whicheach includes digital data and program code to access the digital data,said method comprising: determining, based on a plurality ofmedia-modules that each respectively represent at least onemedia-component, a central-user-interface that is used to access theplurality of media-components provided by the multi-media center;receiving input associated with the central-user-interface; determiningwhether to forward the input to one of the media-modules; and forwardingthe input to a first media-module of the plurality of media-modules whenthe determining determines to forward the input by one of themedia-modules, wherein the plurality of media-modules are isolated fromeach other and do not directly communicate with each other or with amulti-media center user, but communicate with a module-controller.
 21. Acomputing system for providing a multi-media center that supportsdigital media, said computing system comprising: a plurality of mediadevices, wherein said media devices include a first media device thatcan receive input and generate output; and a centralized controllerconfigured to communicate directly with each of said plurality of mediadevices, wherein said centralized controller is configured to: receiveinput associated with said multi-media center; determine a first mediadevice of said plurality of media device to receive the input; forwardthe input to said first media device; and process and generate anoutput, by said first media device, in response to the input.
 22. Acomputing system as recited in claim 21, wherein said plurality of mediadevices communicate with each other by way of said centralizedcontroller.
 23. A computing system as recited in claim 21, wherein saidcentralized controller is further configured to: receive the output fromsaid first media device in response to the input; and perform at leastone operation based on the output, wherein the at least one operation iscontrolled by the centralized controller.
 24. A computing system asrecited in claim 23, wherein the at least one operation being performedcomprises presenting media data